# Author: Lizhubo
# date: 2021.9.31-10.13
# week05
# 数据结构之列表
# 主要知识：列表的预习（作业代办）
# square = [1,4,9,16,20]

# 列表的私有方法

stucode = [10001,10002,10003,10001,10001]
# 思考如何取出所有10001的位置索引
names = ["Mike","Mary","Jan","Jack"]
# 1.增加的方法
# 1.1增加 append() 增加list的末尾
names.append("Alex")  # 直接在末尾增加
print(names)
# 1.2插入insert() 可以指定位置添加元素
names.insert(0,"youge")
print(names)
names.insert(2,"youge")   # insert插入元素，0，2表示在列表的哪一个位置，比如“0，插入”就是第一个，“2，插入”就是第三个
print(names)
names.remove("Mary")
print(names)           # 可以把不想要的信息直接输入删除

# 只有增加信息不用查询信息是否存在，删除的话要查询时是否有信息，如下
# names.remove("x")
# print(names)

# 列表的其他方法（Sequence Type的一些方法）

## 1.len()查看list长度
# print("names的长度/names的列表元素个数：",len(names))
## 2.in 查看元素是否存在list当中,结果为布尔值，false/True
## 一般在操作
# print("liumang")

# 2.删除 remove 和 pop
## 2.1 remove（）一般情况下 使用remove先用in做判断
# if 1 in names:
#     names.remove(1)
# print("remove删除的结果：")

## 2.2 pop()删除位置为1的这个元素
# names.pop(1)
# print("pop()的方法后的names:",names)
# print(names)


# 3. index()索引 查看该元素如10001 在stucode中第一个出现的位置索引
print(stucode.index(10001))
## 4.clear（）清除所有数据
# names.clear()
# print("清除names列表后的值:",names)

## 5.count()查看列表所有元素出现的个数
# print("count方法的结果:",stucode.count(10001))
# print(names)

## 6.extend()是给指定list的扩充
names.extend(stucode)
print(names)


## 作业：list方法的总结，list切片的总结

# 1.list一个列表的所有过程：
# 1.1 直接用shell定义一个列表：
# try = [a,b,c,d,e] try是列表名字 a,b,c...是列表的元素
# 1.2 增加元素的方法有“append”——直接加、”insert“——插入加：
# 1.3 len查询列表中元素多少：
# found = []
# len(found)             .........是利用len来查询列表中有多少个元素
# in查询元素是否在列表中
# 1.4删除元素 remove 是直接删除出现的第一个出现的元素；pop可以定位置删除
# 1.5 extend是将一整个列表加入列表
# 1.6 chear 是清空列表的意思
# 1.7 sort是从小到大排序、如果是 list.sort(reverse=True)则是从大到小排


# 2.顺口溜总结：
# list用法大讲究：
# insert随意插、append末尾加；小len查户口、不in就不慌；
# remove删第一、pop随处删。要想列表藏得住、壮大家族找extend。
# 隐姓埋名可修改，chear一来全杀光

